package person

import (
	"crypto/md5"
	"encoding/hex"
	"fmt"
	"time"

	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

type Person struct {
	Name     string
	Sn       string
	Pswd     string
	Birthday time.Time
	Sex      string
	// 钱包
	MoneyPacket float32
}

func (p *Person) TableName() string {

	return "classmates"
}

// 注册
func (p *Person) Register() bool {

	return true
}

// 1. 结构体的方法的编写
// 2. 结构体方法的调用

// 登录
func (p *Person) Login() bool {
	fmt.Println("请输入你的学号")
	var sn string
	fmt.Scanln(&sn)
	var pswd string
	fmt.Println("请输入你的密码")
	fmt.Scanln(&pswd)
	//从数据库里 获取真实的用户名和密码进行判断
	// 如果用户名和密码都对，那么返回true
	dsn := "root:123456@tcp(172.40.0.189:3306)/chuanyou?charset=utf8mb4&parseTime=True"
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
	if err != nil {
		fmt.Println("数据库连接失败:", err.Error())
		return false
	}

	db.Raw("SELECT * FROM chuanyou.classmates where sn=?", sn).Scan(p)
	fmt.Println(" 查询出的用户密码是：", p.Pswd)

	jiami := md5.New()
	jiami.Write([]byte(pswd))
	pswd = hex.EncodeToString(jiami.Sum(nil))
	fmt.Println(" 我自己输入的密码是：", pswd)
	if p.Pswd == pswd {
		return true
	}
	// 否则，返回false

	return false
}

// 吃饭
func (p *Person) Chifan() bool {

	return true
}

// 充值
func (p *Person) Chongzhi(edu float32) {
	p.MoneyPacket = p.MoneyPacket + edu
}
